@echo off
REM 设备管理系统环境管理脚本
REM 提供快速切换和管理不同环境的功能

setlocal EnableDelayedExpansion

echo.
echo 🔧 设备管理系统环境管理工具
echo ================================

if "%1"=="" goto show_help

if "%1"=="info" goto show_info
if "%1"=="switch" goto switch_env
if "%1"=="start" goto start_server
if "%1"=="test" goto run_tests
if "%1"=="validate" goto validate_config
if "%1"=="diff" goto compare_config
if "%1"=="create-sample" goto create_sample
if "%1"=="help" goto show_help

goto unknown_command

:show_info
echo 📊 显示当前配置信息...
python -m app.core.config_manager info
goto end

:switch_env
if "%2"=="" (
    echo ❌ 错误：请指定环境名称
    echo 用法: env_manager.bat switch ^<environment^>
    echo 可用环境: development, testing, staging, production
    goto end
)
echo 🔄 切换到 %2 环境...
set ENVIRONMENT=%2
python -m app.core.config_manager switch %2
goto end

:start_server
if "%2"=="" (
    set target_env=development
) else (
    set target_env=%2
)
echo 🚀 启动服务器 - %target_env% 环境...
set ENVIRONMENT=%target_env%
python start_server.py --env %target_env% %3 %4 %5 %6
goto end

:run_tests
echo 🧪 运行测试...
set ENVIRONMENT=testing
python -m pytest tests/ -v
goto end

:validate_config
if "%2"=="" (
    echo 🔍 验证当前环境配置...
    python -m app.core.config_manager validate
) else (
    echo 🔍 验证 %2 环境配置...
    python -m app.core.config_manager validate %2
)
goto end

:compare_config
if "%2"=="" goto missing_compare_args
if "%3"=="" goto missing_compare_args
echo 📊 比较 %2 和 %3 环境配置...
python -m app.core.config_manager diff %2 %3
goto end

:missing_compare_args
echo ❌ 错误：请指定两个环境名称进行比较
echo 用法: env_manager.bat diff ^<env1^> ^<env2^>
goto end

:create_sample
if "%2"=="" (
    echo ❌ 错误：请指定环境名称
    echo 用法: env_manager.bat create-sample ^<environment^>
    goto end
)
echo 📝 创建 %2 环境示例配置文件...
python -m app.core.config_manager create-sample %2
goto end

:show_help
echo.
echo 📖 环境管理工具使用说明
echo ========================
echo.
echo 基本命令:
echo   info                           显示当前配置信息
echo   switch ^<env^>                   切换到指定环境
echo   start [env] [options]          启动服务器
echo   test                           运行测试（自动使用testing环境）
echo   validate [env]                 验证配置
echo   diff ^<env1^> ^<env2^>            比较两个环境的配置
echo   create-sample ^<env^>            创建示例配置文件
echo   help                           显示此帮助信息
echo.
echo 可用环境:
echo   development  - 开发环境（默认）
echo   testing      - 测试环境
echo   staging      - 预发布环境  
echo   production   - 生产环境
echo.
echo 启动选项:
echo   --reload                       启用热重载（仅开发环境）
echo   --host ^<address^>               指定服务器地址
echo   --port ^<port^>                  指定端口
echo   --log-level ^<level^>            指定日志级别
echo.
echo 使用示例:
echo   env_manager.bat info                          # 显示配置信息
echo   env_manager.bat switch development            # 切换到开发环境
echo   env_manager.bat start development --reload    # 启动开发服务器并热重载
echo   env_manager.bat start production              # 启动生产服务器
echo   env_manager.bat validate staging              # 验证预发布环境配置
echo   env_manager.bat diff development production   # 比较开发和生产环境配置
echo.
goto end

:unknown_command
echo ❌ 未知命令: %1
echo 使用 'env_manager.bat help' 查看帮助信息
goto end

:end
echo.
pause